#include "dag.h"
#include "dag_nodes.h"
#include "dag_operators.h"

#include <memory>

using namespace dag;
using namespace std;

namespace {
	NodeTraits pass_traits;
}

PassNode::PassNode() {
	pass_traits.resources = LearnResource_None;
	pass_traits.canReverse = true;
}

PassNode::~PassNode() throw() {
}

const NodeTraits& PassNode::traits() const {
	return pass_traits;
}

void PassNode::_init(const FrameSpec& expectedInputSpec) {
	m_Spec = expectedInputSpec;
}

const FrameSpec& PassNode::_inputSpec() const {
	return m_Spec;
}

const FrameSpec& PassNode::_outputSpec() const {
	return m_Spec;
}

auto_ptr<FrameOperator> PassNode::_createForwardOp() const {
	return auto_ptr<FrameOperator>(new PassOp());
}

auto_ptr<FrameOperator> PassNode::_createReverseOp() const {
	return auto_ptr<FrameOperator>(new PassOp());
}

void PassNode::_learn(const FrameDepot* input, 
					  const FrameDepot* output) {
}